package com.quanyan.club.service;

import com.quanyan.club.entity.vo.resp.task.EggTaskFinishCase;
import com.quanyan.club.entity.vo.resp.task.TaskActivityInfo;
import com.quanyan.club.entity.vo.resp.task.TaskInfo;
import com.quanyan.common.Plugin.PageObj;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * Created by zhuo.shi on 2016/11/14.
 * 俱乐部鸟蛋任务服务类
 *
 */
public interface ClubTaskEggService {

    /**
     * 查询当前时间的自然周内，有活动结算的俱乐部完成鸟蛋任务情况
     * @return
     */
    List<EggTaskFinishCase> queryFinishEggTaskClubs();

    /**
     * 获取鸟蛋任务列表
     * @param clubType  俱乐部类型
     * @param clubId    俱乐部id
     * @return
     */
    List<EggTaskFinishCase> getEggTaskFinishCaseList(int clubType, int clubId, String ver);

    /**
     * 任务达标发放鸟蛋
     * @param clubId            俱乐部id
     */
    Map<String, Object> giveOutEggs(int uid, int clubId, Date weekDate);

    /**
     * 任务中心，任务列表
     * @param clubId        俱乐部id
     * @param pageNo        页码
     * @param pageSize      每页记录数
     * @return
     */
    PageObj<List<TaskInfo>> getClubTaskInfoList(int clubId, int pageNo, int pageSize);

    /**
     * 获取获取奖励的任务列表
     * @param clubId        俱乐部id
       @param weekDate      一周中任何一天
     * @return
     */
    List<TaskActivityInfo> getTaskActivityInfoOfThisWeek(int clubId, Date weekDate);

    /**
     * 记录俱乐部一周的鸟蛋任务完成情况
     */
    void recordClubWeekTaskSummary(EggTaskFinishCase taskFinishCase, boolean summary);

    /**
     * 计算任务完成系数
     */
    double getCoefficient(EggTaskFinishCase taskFinishCase);

    /**
     * 直接更新一周内有结算的俱乐部周任务积分
     * @param startTime     周一零点
     * @param endTime       周日23:59:59
     */
    void directModifyClubWeekTaskStar(Date startTime, Date endTime);
}
